package com.xsd.singleton;

/**
 * @Description: 单例模式  饿汉式 ( 静态代码块）
 * @Author: zhoufuzong
 * @Created: 2021-01-23 11:46:52
 * @Version: 1.1.0
 */

/**
 * 优缺点说明：
 *  1) 这种方式和上面的方式其实类似，只不过将类实例化的过程放在了静态代码块中，
 *  也是在类装载的时候，就执行静态代码块中的代码，初始化类的实例。优点和上面是一样的。
 * 2) 结论：这种单例模式可用，但是可能造成内存浪费
 */
public class SingletonTest2 {

    public static void main(String[] args) {
        Singleton2 singleton = Singleton2.getInstance();
        Singleton2 singleton1 = Singleton2.getInstance();
        System.out.println(singleton ==singleton1);
    }
}


class Singleton2{
    private  static Singleton2 singleton;

    static {
        singleton = new Singleton2();
    }

    // 1. 构造器私有化
    private Singleton2(){
    }

    // 2. 本类内部创建对象实例


    public static Singleton2 getInstance(){
        return singleton;
    }

}
